package blancosMikel.controller.servlets;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import blancosMikel.controller.beans.directorioBeans;
import blancosMikel.controller.beans.estadosBeans;
import blancosMikel.controller.beans.informativaBeans;
import blancosMikel.controller.beans.marcaBeans;
import blancosMikel.controller.beans.noticiasBeans;
import blancosMikel.controller.beans.promocionesBeans;
import blancosMikel.model.dao.directorioDAO;
import blancosMikel.model.dao.estadosDAO;
import blancosMikel.model.dao.informativaDAO;
import blancosMikel.model.dao.marcaDAO;
import blancosMikel.model.dao.noticiasDAO;
import blancosMikel.model.dao.promocionesDAO;

@WebServlet(description = "Carga la pagina principal del sistema e inicializa los componentes", urlPatterns = { "/blancosMikel" })
public class blancosMikel extends HttpServlet {

	private static final long serialVersionUID = 1L;
	private String mapping = null;

	// BEANS
	informativaBeans info = new informativaBeans();

	// DAOS
	informativaDAO iDAO = new informativaDAO();
	estadosDAO eDAO = new estadosDAO();
	noticiasDAO nDAO = new noticiasDAO();
	promocionesDAO pDAO = new promocionesDAO();
	marcaDAO mDAO = new marcaDAO();
	directorioDAO dDAO = new directorioDAO();

	// CATALOGOS
	ArrayList<promocionesBeans> catPromociones = new ArrayList<promocionesBeans>();
	ArrayList<noticiasBeans> catNoticias = new ArrayList<noticiasBeans>();
	ArrayList<marcaBeans> catMarcas = new ArrayList<marcaBeans>();
	ArrayList<directorioBeans> agenda = new ArrayList<directorioBeans>();
	ArrayList<estadosBeans> catEdo = new ArrayList<estadosBeans>();

	public blancosMikel() {
		super();
		System.out.println("SVR.Home----------> Ejecutandose!");
	}

	/**
	 * TOMANDO EN CUENTA QUE LOS REQUEST.SETATRIBUTE SE CREAN EN EL MOMENTO DE
	 * LA RESPUESTA Y SE DESTRUYEN AL MOMENTO QUE SE EJECUTA EL FORWARD
	 */

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("SVR.home----------> doGet");

		try {
			System.out.println("SVR.home.doGet----------> infoDAO Cargado!");
			// cargando catalogos
			catMarcas = mDAO.selectMarcas();
			catNoticias = nDAO.selectNoticias();
			catPromociones = pDAO.selectPromociones();
			// cargando beans
			iDAO.selectInfo(info);
			// enviando las respuestas
			request.setAttribute("infoBean", info);
			request.setAttribute("catNoticias", catNoticias);
			request.setAttribute("catMarcas", catMarcas);
			request.setAttribute("catPromo", catPromociones);
			// seleccionando el siguiente jsp
			mapping = "COMMONS/index.jsp";
		} catch (Exception error) {
			System.out
					.println("SVR.home.doGet.ErrorCargandoModuloInformativo----------> "
							+ error.getMessage());
			request.setAttribute("mensaje", error.getMessage());
		} finally {
			request.getRequestDispatcher(mapping).forward(request, response);
			System.out.println("SVR.home.doGet----------> forward.index.jsp");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("SVR.home----------> doPost");
		int dispatch = Integer.parseInt(request.getParameter("dispatch"));
		System.out.println(dispatch);

		try {
			System.out.println("SVR.home.doPost----------> infoDAO Cargado!");
			switch (dispatch) {
			case 0:
				// cargando catalogos
				catMarcas = mDAO.selectMarcas();
				catNoticias = nDAO.selectNoticias();
				catPromociones = pDAO.selectPromociones();
				// cargando bean
				iDAO.selectInfo(info);
				// enviando respuestas
				request.setAttribute("infoBean", info);
				request.setAttribute("catNoticias", catNoticias);
				request.setAttribute("catMarcas", catMarcas);
				request.setAttribute("catPromo", catPromociones);
				// seleccionando el siguiente jsp
				mapping = "COMMONS/index.jsp";
				System.out
						.println("SVR.home.doPost----------> forward.index.jsp");
				break;
			case 1:
				// carganso el bean
				iDAO.selectInfo(info);
				// enviando respuesta
				request.setAttribute("infoBean", info);
				// seleccionando el siguiente jsp
				mapping = "SEGURIDAD/singIn.jsp";
				System.out
						.println("SVR.home.doPost----------> forward.singIn.jsp");
				break;
			case 2:
				// cargando el bean
				iDAO.selectInfo(info);
				// cargando catalogos
				agenda = dDAO.loadPhones();
				catEdo = eDAO.getEstados();
				// enviando respuestas
				request.setAttribute("agenda", agenda);
				request.setAttribute("edoLIST", catEdo);
				request.setAttribute("infoBean", info);
				// seleccionando el siguiente jsp
				mapping = "COMMONS/contacto.jsp";
				System.out
						.println("SVR.home.doPost----------> forward.contacto.jsp");
				break;
			}
		} catch (Exception error) {
			System.out
					.println("SVR.home.doPost.ErrorCargandoModuloInformativo----------> "
							+ error.getMessage());
			request.setAttribute("mensaje", error.getMessage());
		} finally {
			request.getRequestDispatcher(mapping).forward(request, response);
		}
	}
}
